home *** CD-ROM | disk | FTP | other *** search
/ 10,000 Great Games / 10,000 Great Games.iso / Product / 66 / data1.cab / Source_Files / Src / Gamma.cpp < prev    next >
C/C++ Source or Header  |  2000-01-16  |  1KB  |  72 lines

  1. #include "stdafx.h"
  2. #include "Gamma.h"
  3.  
  4. CGamma::CGamma(CWnd* pParent)
  5.     : CDialog(CGamma::IDD, pParent)
  6. {
  7.     //{{AFX_DATA_INIT(CGamma)
  8.     //}}AFX_DATA_INIT
  9. }
  10.  
  11. void CGamma::DoDataExchange(CDataExchange* pDX)
  12. {
  13.     CDialog::DoDataExchange(pDX);
  14.     //{{AFX_DATA_MAP(CGamma)
  15.     DDX_Control(pDX, IDC_GAMMA_VALUE, m_Gamma);
  16.     //}}AFX_DATA_MAP
  17. }
  18.  
  19. BEGIN_MESSAGE_MAP(CGamma, CDialog)
  20.     //{{AFX_MSG_MAP(CGamma)
  21.     ON_BN_CLICKED(IDAPPLY, OnApply)
  22.     //}}AFX_MSG_MAP
  23. END_MESSAGE_MAP()
  24.  
  25. BOOL CGamma::OnInitDialog() 
  26. {
  27.     CDialog::OnInitDialog();
  28.     
  29.     m_Gamma.SetRange(0, 100);    
  30.     m_Gamma.SetTicFreq(10);
  31.     m_Gamma.SetPos((int)((1.5 - gamma) * 100));
  32.  
  33.     return TRUE;
  34. }
  35.  
  36. void CGamma::OnOK() 
  37. {
  38.     OnApply();
  39.  
  40.     CDialog::OnOK();
  41. }
  42.  
  43. void CGamma::OnApply() 
  44. {
  45.     // Set gamma correction
  46.  
  47.     double g = 1.5 - (double)m_Gamma.GetPos() / 100;
  48.  
  49.     if (g == gamma)
  50.         return;
  51.  
  52.     gamma = g;
  53.  
  54.     // Reload game
  55.  
  56.     CWaitCursor wait;
  57.  
  58.     save_level(autosave_level);
  59.     
  60.     deinit_game_loop();
  61.     deinit_game_data();
  62.     deinit_directdraw();
  63.  
  64.     init_directdraw_inawin();
  65.     init_game_data();
  66.     init_game_loop();
  67.  
  68.     load_level(autosave_level);
  69.  
  70.     gamewindow->Invalidate();
  71. }
  72.